如果应用程序是从 Play 商店下载的,覆盖屏幕选项是否默认启用
Is overlay screen option is by default enable if application is downloaded from play store
来自 Android 6 我们必须在应用程序中处理覆盖屏幕,我在某处读到如果应用程序是从 Play 商店下载的,那么默认覆盖屏幕选项是启用的。我只是想确认这是真的吗?或者为此我们必须进行额外的编码。目前我正在使用以下代码为 Android 6+ 设备调用覆盖屏幕启用:
private void callOverlayScreen() {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + BuildConfig.APPLICATION_ID));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
}
}
目前我的 if 条件总是为真。如果假设我在 Play 商店上发布应用程序,那么它不会进入 if 条件,直到用户手动禁用覆盖屏幕?
我们可以在不从 Playstore 下载应用程序的情况下检查此行为吗?
在official android documentation中,它说:
Note: If the app targets API level 23 or higher, the app user must explicitly grant this permission to the app through a permission management screen.
基于SYSTEM_ALERT_WINDOW
的documentation,此权限分类为
Protection level: signature
和
Note: If the app targets API level 23 or higher, the app user must explicitly grant this permission to the app through a permission management screen
对于你的问题:
I read somewhere that if application is downloaded from play store then by default overlay screen option is enable.
基于 documentation 促进签名级别权限的权限授予:
The system grants these app permissions at install time, but only when the app that attempts to use a permission is signed by the same certificate as the app that defines the permission.
由于您的应用不会使用与系统相同的证书进行签名,因此在安装时不会向您的应用授予覆盖权限。
我建议您保持检查状态。
是的,你是对的。 SYSTEM_ALERT_WINDOW
从 Play 商店安装应用程序时,始终授予权限。
查看 Whosebug 上已经提供的另一个答案,确认:
SYSTEM_ALERT_WINDOW - 如何在 Android 6.0 和 targetSdkVersion 23 上自动获取此权限
但请注意,它仅适用于 Play 商店。如果您想在 Samsung Store 或 Amazon Store 中发布应用程序,那么您可能会遇到问题。
也看看不同的问题,其中 Toast
被识别为视图,这可能会在某些设备上导致类似的问题:
希望这个答案能消除您的一些顾虑。
来自 Android 6 我们必须在应用程序中处理覆盖屏幕,我在某处读到如果应用程序是从 Play 商店下载的,那么默认覆盖屏幕选项是启用的。我只是想确认这是真的吗?或者为此我们必须进行额外的编码。目前我正在使用以下代码为 Android 6+ 设备调用覆盖屏幕启用:
private void callOverlayScreen() {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + BuildConfig.APPLICATION_ID));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
}
}
目前我的 if 条件总是为真。如果假设我在 Play 商店上发布应用程序,那么它不会进入 if 条件,直到用户手动禁用覆盖屏幕?
我们可以在不从 Playstore 下载应用程序的情况下检查此行为吗?
在official android documentation中,它说:
Note: If the app targets API level 23 or higher, the app user must explicitly grant this permission to the app through a permission management screen.
基于SYSTEM_ALERT_WINDOW
的documentation,此权限分类为
Protection level: signature
和
Note: If the app targets API level 23 or higher, the app user must explicitly grant this permission to the app through a permission management screen
对于你的问题:
I read somewhere that if application is downloaded from play store then by default overlay screen option is enable.
基于 documentation 促进签名级别权限的权限授予:
The system grants these app permissions at install time, but only when the app that attempts to use a permission is signed by the same certificate as the app that defines the permission.
由于您的应用不会使用与系统相同的证书进行签名,因此在安装时不会向您的应用授予覆盖权限。
我建议您保持检查状态。
是的,你是对的。 SYSTEM_ALERT_WINDOW
从 Play 商店安装应用程序时,始终授予权限。
查看 Whosebug 上已经提供的另一个答案,确认:
SYSTEM_ALERT_WINDOW - 如何在 Android 6.0 和 targetSdkVersion 23 上自动获取此权限
但请注意,它仅适用于 Play 商店。如果您想在 Samsung Store 或 Amazon Store 中发布应用程序,那么您可能会遇到问题。
也看看不同的问题,其中 Toast
被识别为视图,这可能会在某些设备上导致类似的问题:
希望这个答案能消除您的一些顾虑。